/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.acesso.Usuario;
import br.com.deployment.entidade.selo.Distribuicao;
import br.com.deployment.entidade.selo.Selo;
import br.com.deployment.entidade.selo.TipoSelo;
import br.com.deployment.interfaces.DistribuicaoDaoIn;
import br.com.deployment.servico.DistribuicaoServico;
import br.com.deployment.utilitario.DistribuirSelos;
import br.com.deployment.utilitario.Msg;
import br.com.deployment.utilitario.ResulDistribuicao;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 *getSelo
 * @author elyjr
 */
@Stateless
@LocalBean
public class DistribuicaoServicoImpl implements DistribuicaoServico {

    @EJB
    DistribuicaoDaoIn distribuicaoDao;

    @Override
    public void create(Distribuicao dis) {
        dis.setDataDistribuicao(new Date());
        distribuicaoDao.save(dis);

    }

    @Override
    public void edit(Distribuicao dis) {
         distribuicaoDao.update(dis);

    }

    @Override
    public void remove(Distribuicao dis) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Distribuicao find(int id) {
        return distribuicaoDao.find(id);
    }

    @Override
    public List<Distribuicao> findRecebedor(Usuario recebedor) {
        return distribuicaoDao.findRecebedor(recebedor);
    }

    @Override
    public List<Distribuicao> findAll() {
        return distribuicaoDao.findAll();
    }

    @Override
    public List<Distribuicao> findTipoEnd(Distribuicao dis) {
        return distribuicaoDao.findTipoEnd(dis);
    }

    @Override
    public List<Selo> atribuirSelos(TipoSelo tipoSelo, int qtd) {
        return distribuicaoDao.atribuirSelos(tipoSelo, qtd);
    }

    @Override
    public Long qtdSelo(Usuario u, TipoSelo tSelo) {
        return distribuicaoDao.qtdSelo(u, tSelo);
    }

    @Override
    public List<Selo> meusSelo(Usuario u, TipoSelo tSelo) {
        return distribuicaoDao.meusSelo(u, tSelo);
    }

    @Override
    public Boolean containsSelo(TipoSelo tSelo, Integer qtd) {
        return distribuicaoDao.containsSelo(tSelo, qtd);
    }

    @Override
    public void distribuirSelos(ResulDistribuicao rd,List<DistribuirSelos> list, List<ResulDistribuicao> resulDis, List<Selo> lstSeloAll) {
       // distribuicaoDao.distribuirSelos(rd, list, resulDis, lstSeloAll);     
       
    }

    @Override
    public List<TipoSelo> editDistribuicao(Distribuicao dis) {
        return distribuicaoDao.editarDistribuicao(dis);
    }
    
    @Override
    public List<DistribuirSelos> getDistribuirSelos(Distribuicao d){
        List<DistribuirSelos> lsds = new ArrayList<DistribuirSelos>();
        List<Selo> lst = new ArrayList<Selo>();
        DistribuirSelos ds = new DistribuirSelos();
        Selo s = new Selo();
        
        
        for (TipoSelo ts :  verificarTipoSelo(d)) {
            ds.setTipoSelo(ts);            
            lst = distribuicaoDao.getSelos(ts, d);
            ds.setQuantidade(lst.size());            
            ds.setLstSelo(lst);
            lsds.add(ds);
            ds = new DistribuirSelos();
        }
        
        return lsds;
    }

    @Override
    public List<TipoSelo> verificarTipoSelo(Distribuicao d) {
        return distribuicaoDao.verificarTipoSelo(d);
    }

    @Override
    public int count(TipoSelo tipoSelo) {
        return distribuicaoDao.count(tipoSelo);
    }

    @Override
    public List<Selo> tipoSeloListaSelos(TipoSelo tselo, Distribuicao dis) {
         return distribuicaoDao.tipoSeloListaSelos(tselo, dis);
    }

    @Override
    public TipoSelo agrupando(TipoSelo tipoSelo) {
        return distribuicaoDao.agrupando(tipoSelo);
    }

    @Override
    public List<Selo> selosDistribuicao(Distribuicao dis) {
        return distribuicaoDao.selosDistribuicao(dis);
    }

    @Override
    public List<Distribuicao> pesquisaDistribuicao(Distribuicao distribuicao) {
        return distribuicaoDao.pesquisaDistribuicao(distribuicao);
    }
   
}
